import java.util.Random;

//TIP 要<b>运行</b>代码，请按 <shortcut actionId="Run"/> 或
// 点击间距中的 <icon src="AllIcons.Actions.Execute"/> 图标。
public class Main {
    public static void main(String[] args) {
        //数组，元素为point对象
        Point[] arr=new Point[100];
        printArr(arr);//打印数组
        setArr(arr);//给数组赋值，人为更改用set,get方法
        printArr(arr);//打印赋值后的数组
        pointEqual(arr);//判断相等元素
        System.out.println(pointEqual(arr));//查看结果
        getDistance(arr[2],arr);//得到指定元素和数组元素的距离
        double result=distanceNear(arr);//距离最近
        System.out.println("最小距离："+result);
    }

    private static double distanceNear(Point[] arr) {
        double result=100000;
        int index1=0;
        int index2=0;
        for(int i=0;i<arr.length;i++){
            for(int j=i+1;j<arr.length;j++){
                double x=arr[i].getX()-arr[j].getX();
                double y=arr[i].getY()-arr[j].getY();
                double distance=Math.sqrt(x*x+y*y);
                if(distance<result){
                    result=distance;
                    index1=i;
                    index2=j;
                }
            }
        }System.out.println("距离最近的两个点是： (" + arr[index1].getX() + ", " + arr[index1].getY() + ") " +
                "和 (" + arr[index2].getX() + ", " + arr[index2].getY() + ")");
        return result;
    }

    private static void getDistance(Point point, Point[] arr) {
        for(int i=0;i<arr.length;i++){
            System.out.println(pointDistance(point,arr[i]));;
        }
    }

    private static double pointDistance(Point p1,Point p2){
        double x=p1.getX()-p2.getX();
        double y=p1.getY()-p2.getY();
        return Math.sqrt(x*x+y*y);

    }
    private static boolean pointEqual(Point[] arr) {
        for(int i=0;i<arr.length;i++){
            for(int j=i+1;j< arr.length;j++){
                if(arr[i].equals(arr[j])){
                    return true;
                }

            }
        }
        return false;
    }

    private static void setArr(Point[] arr) {
        Random rd=new Random();
        for(int i=0;i<arr.length;i++){
            Point p=new Point();
            p.setX(rd.nextDouble()*10);
            p.setY(rd.nextDouble()*10);
            arr[i]=p;
        }
    }

    private static void printArr(Point[] arr) {
        for(int i=0;i<arr.length;i++){
            System.out.println(i+" "+arr[i]);
        }
    }
}